package com.ts.api.module.app.org.entity.vo;

import com.gitee.apanlh.util.base.IteratorUtils;
import com.ts.api.common.constant.app.AppMatchTypeEnum;
import com.ts.api.module.channel.entity.po.ChannelMarketPO;
import com.ts.api.module.product.entity.po.ProductPO;
import com.ts.api.module.product.entity.po.ProductPlanPO;
import com.ts.api.module.product.entity.po.ProductUserMatchPO;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 *  返回APP匹配机构
 *
 *  @author Pan
 */
@Data
public class RespAppMatchVO {

    /** 主体id或贷超id（根据匹配类型区分） */
    private Long id;
    /** 匹配额度 */
    private String textMatch;
    /** 最高额度 */
    private String textMax;
    /** 额度范围 */
    private String textRange;
    /** 年利率 */
    private String textAnnualRate;
    /** 月利率 */
    private String textMonthlyRate;
    /** 贷款期限 */
    private String textTerm;
    /** 联系人姓名 */
    private String contactName;
    /** 联系人电话 */
    private String contactPhone;
    /** 联系方式 */
    private String contactType;
    /** 主体名称 */
    private String productName;
    /** 计划-投放名称 */
    private String displayName;
    /** 计划-LOGO地址 */
    private String logoPath;
    /** 计划-链接 */
    private String link;
    /** 计划- 链接跳转类型(0默认跳转(机构跳转), 1公众号跳转, 2外链跳转, 3企微跳转) */
    private String linkType;
    /** 匹配创建时间 */
    private String matchCreateTime;
    /** 是否匹配贷超 0匹配机构 1匹配贷超 */
    private Integer matchType;

    /**
     *  将匹配结果设置为机构实体
     *
     *  @param  productPO        主体实体
     *  @param  productPlanPO    计划实体
     *  @return RespAppMatchVO
     */
    public static RespAppMatchVO mappingOrg(ProductPO productPO, ProductPlanPO productPlanPO) {
        RespAppMatchVO result = new RespAppMatchVO();
        //  设置文案信息
        result.setTextMatch("20000");
        result.setTextMax("300000");
        result.setTextRange("20000-300000");
        result.setTextAnnualRate("14.62%");
        result.setTextMonthlyRate("1.52%");
        result.setTextTerm("12个月");

        //  设置主体信息
        result.setContactPhone(productPO.getContactPhone());
        result.setContactName(productPO.getContactName());
        result.setContactType(productPO.getContactType());
        result.setProductName(productPO.getName());

        //  设置计划信息
        result.setId(productPlanPO.getId());
        result.setDisplayName(productPlanPO.getDisplayName());
        result.setLogoPath(productPlanPO.getLogoPath());
        result.setLink(productPlanPO.getLink());
        result.setLinkType(productPlanPO.getLinkType());
        result.setMatchType(AppMatchTypeEnum.ORG.getType());
        return result;
    }

    /**
     *  将匹配结果设置为机构实体
     *
     *  @param  marketPO        贷超实体
     *  @return RespAppMatchVO
     */
    public static RespAppMatchVO mappingMarket(ChannelMarketPO marketPO) {
        RespAppMatchVO result = new RespAppMatchVO();
        result.setId(marketPO.getId());
        //  设置贷超信息
        result.setDisplayName(marketPO.getName());
        result.setTextMatch(marketPO.getTextMatch());
        result.setTextMax(marketPO.getTextMax());
        result.setTextRange(marketPO.getTextRange());
        result.setTextAnnualRate(marketPO.getTextAnnualRate());
        result.setTextMonthlyRate(marketPO.getTextMonthlyRate());
        result.setTextTerm(marketPO.getTextTerm());
        result.setLogoPath(marketPO.getLogoPath());
        result.setLink(marketPO.getLink());
        result.setMatchType(AppMatchTypeEnum.MARKET.getType());
        return result;
    }

    /**
     *  将匹配结果设置为机构实体
     *
     *  @param  listProductUserMatchPO        贷超实体
     *  @return RespAppMatchVO
     */
    public static List<RespAppMatchVO> mappingListOrg(List<ProductUserMatchPO> listProductUserMatchPO) {
        List<RespAppMatchVO> listResult = new ArrayList<>();

        IteratorUtils.array(listProductUserMatchPO, t -> {
            RespAppMatchVO result = new RespAppMatchVO();
            //  设置文案信息
            result.setTextMatch("20000");
            result.setTextMax("300000");
            result.setTextRange("20000-300000");
            result.setTextAnnualRate("14.62%");
            result.setTextMonthlyRate("1.52%");
            result.setTextTerm("12个月");

            //  主体信息
            result.setContactName(t.getProductContactName());
            result.setContactPhone(t.getProductContactPhone());
            result.setContactType(t.getProductContactType());
            result.setProductName(t.getProductName());

            //  设置计划信息
            result.setId(t.getProductPlanId());
            result.setDisplayName(t.getPlanDisplayName());
            result.setLogoPath(t.getPlanLogoPath());
            result.setLink(t.getPlanLink());
            result.setLinkType(t.getPlanLinkType());
            result.setMatchType(AppMatchTypeEnum.ORG.getType());

            //  设置匹配时间
            result.setMatchCreateTime(t.getMatchCreateTime());
            listResult.add(result);
        });
        return listResult;
    }
}
